package com.example.voyager.ioc;

public interface BeanDefinition {

    //标准单例作用域的作用域标识符： “singleton”
    String SCOPE_SINGLETON = "singleton";

    void setBeanClass(Class c);
    Class<?> getBeanClass();
    String getScope();
    boolean isSingleton();
    boolean isPrototype();
    String getFactoryBeanName();
    String getFactoryMethodName();
    String getInitMethodName();
    String getDestoryMethodName();



    //tips:java8开始就可以直接写接口默认方法了
//    default boolean validate(){
//        //class没指定,工厂bean或工厂method不指定皆为不合法情况
//        if (this.getBeanClass()==null){
//            if(StringUtils.isBlank(getFactoryBeanName())||StringUtils.isBlank(getFactoryMethodName())){
//                return false;
//            }
//        }
//
//        //class和工厂bean同时存在
//        if (this.getBeanClass()!=null && StringUtils.isNotBlank(getFactoryBeanName())){
//            return false;
//        }
//        return true;
//    }



}
